package projectos.uvg.radio;

/**
 * Interfaz que define las obligaciones del radio
 */
public interface IRadio {

	// --------------------------------------------------
	// Constantes
	// --------------------------------------------------

	/**
	 * Constante que indica que se está sintonizando la frecuencia AM
	 */
	public String AM = "am";
	/**
	 * Constante que indica que se está sintonizando la frecuencia FM
	 */
	public String FM = "fm";

	// --------------------------------------------------
	// Métodos
	// --------------------------------------------------

	/**
	 * Se mueve en el dial de las emisoras. Si llega a la última emisora, da la
	 * vuelta
	 * 
	 * @param adelante true Si se desea avanzar en el dial. false Si se desea retroceder.
	 * @pre El radio debe estar encendido.
	 * @post Se sintoniza la emisora siguiente, o la primera emisora si se llegó
	 *       al final.
	 */
	public void cambiarEmisora(boolean adelante);

	/**
	 * Enciende o apaga el radio.
	 * 
	 * @post Si está apagado, se enciende y viceversa.
	 */
	public void energia();

	/**
	 * Indica si el radio está encendido.
	 * 
	 * @return true Si está encendido. false Si no lo está.
	 * @post El usuario conoce el estado del radio.
	 */
	public boolean estaEncendido();

	/**
	 * Cambia de frecuencia.
	 * 
	 * @pre El radio debe estar encendido.
	 * @post Si está en AM, pasa a FM y viceversa.
	 */
	public void cambiarFrecuencia();

	/**
	 * Indica la frecuencia que se está sintonizando.
	 * 
	 * @return Las constantes "AM" y "FM", según corresponda.
	 * @pre El radio debe estar encendido.
	 * @post El usuario conoce la frecuencia sintonizada.
	 */
	public String darFrecuencia();

	/**
	 * Indica la emisora que se está sintonizando.
	 * 
	 * @return El número de la emisora que se está sintonizando.
	 * @pre El radio debe estar encendido.
	 * @post El usuario conoce la emisora sintonizada.
	 */
	public float darEmisora();

	/**
	 * Guarda una emisora en el botón indicado.
	 * 
	 * @param boton El botón en el que se desea guardar la emisora.
	 * @param emisora El número de la emisora que se desea almacenar en el botón.
	 * @pre El radio debe estar encendido.
	 * @post Se almacena la emisora en el botón indicado.
	 */
	public void guardarEmisora(int boton, float emisora);

	/**
	 * Selecciona una emisora almacenada en un botón.
	 * 
	 * @param boton El botón del que se desea sintonizar la emisora.
	 * @pre El radio debe estar encendido.
	 * @post Se sintoniza la emisora almacenada en el botón.
	 */
	public void seleccionarEmisora(int boton);
}
